import { UserProfilesAPI } from "@/request/api"
export default {
    //1.设置命名空间
    namespaced: true,
    //共享数据
    state: {
        userInfo: {
            //用户昵称
            nickName: "",
            //用户鸡腿数
            coin: 0,
            //用户头像
            headImg: require('../../assets/img/userImg.f8bbec5e.png')
        },
        //购物车数量
        cartTotal: 0
    },
    mutations: {
        //修改是否显示登录按钮
        changeUserInfo(state, payload) {
            state.userInfo = payload.userInfo;
            state.cartTotal = payload.cartTotal
        },
        initUserInfo(state) {
            state.userInfo = {
                //用户昵称
                nickName: "",
                //用户鸡腿数
                coin: 0,
                //用户头像
                headImg: require('../../assets/img/userImg.f8bbec5e.png')
          
            },
                cartTotal = 0
        }
    },
    actions: {
        async asyncchangeUser(context) {
            //1.请求用户信息
            let user = await UserProfilesAPI();
            //2.调用mutations更新用户信息
            context.commit("changeUserInfo", user.data)
        }
    }
}
/* 
    1.刷新之后vuex数据还原了.回到了默认状态

    2.登录成功后,手动删除token,切换导航时,登录状态变成了未登录,用户信息没有还原
    更新状态:通过组件重载,app.vue中watch,会让topbar.vue重新执行created
    解决:更新登录状态后,同时更新用户信息
    如果未登录,应该将vuex中数据还原
    2.1在vuex中增加方式 初始化state数据
    2.2更新登录状态后,同时更新用户信息

    3.手机扫码后,没有更新用户信息
    代码会去到topbar.vue中的created代码内
    解决:code==0时,调用actions方法更新信息
*/